1. Field of the Invention
The present invention relates generally to data transfer and, more particularly, to systems and methods for improving traffic flow.
2. Description of Related Art
Network devices, such as routers, receive data on physical media, such as optical fiber, analyze the data to determine its destination, and output the data on physical media in accordance with the destination. Routers were initially designed using a general purpose processor executing large software programs. As line rates and traffic volume increased, however, general purpose processors could not scale to meet the new demands. For example, as new functions, such as accounting and policing functionality, were added to the software, these routers suffered performance degradation. In some instances, the routers failed to handle traffic at line rate when the new functionality was added.
To meet the new demands, purpose-built routers were designed. Purpose-built routers are designed and built with components optimized for routing. They not only handle higher line rates and higher network traffic volume, but they also add functionality without compromising line rate performance.
A conventional purpose-built router may include a number of input and output ports from which it receives and transmits streams of data packets. A switching fabric may be implemented in the router to carry the packets between the ports. In a high-performance purpose-built router, the switching fabric may transmit a large amount of data between a number of internal components.
The ports of a conventional router may be configured to handle multiple packet streams. To facilitate this, the ports may include a high speed interface with a wide internal data path, such as a PL4 (Packet-Over-SONET (POS) Physical Layer (PHY) Level 4) interface, which is 16 bits wide and operates at 700 MHz. For multi-stream applications, the bandwidth is dynamically shared on the data path by time multiplexing the streams. It is possible, however, for individual streams to transmit bursts that consume the full available bandwidth for some duration of time. This makes the input buffering problem for multi-stream applications difficult.
If part of the data path, such as a queue or a first-in first-out (FIFO) memory, receives more traffic than it can handle, it asserts a flow control signal upstream. The flow control signal instructs the upstream device to stop transmitting data. The device asserting the flow control usually includes a FIFO or buffer large enough to absorb all of the data already in transit from the upstream device, since there is a latency between the time flow control is asserted and the time the upstream device stops sending new data.
Conventional routers may include a single unified FIFO that receives the time-multiplexed data from the data path. In some circumstances, the FIFO may begin to fill up due to excess traffic on a single stream. In this case, the FIFO may assert flow control. When this happens, all traffic to the FIFO is stopped—including traffic on other streams. This causes all other streams to starve for a lack of data, even though the real traffic backup is only on a single stream. This is called head-of-line blocking.
As a result, there is a need for systems and methods that provide buffering and flow control schemes that address head-of-line blocking and other flow control problems that may occur in multi-stream applications.